package com.lily.aidouzixun.util;

import android.content.Context;
import android.content.SharedPreferences;
import android.os.Handler;
import android.preference.PreferenceManager;
import android.util.SparseArray;

import com.lily.aidouzixun.bean.UserInfo;

/**
 * 我的配置类
 */
public class MyConfig {

    private static volatile MyConfig instance;
    private SparseArray<Handler> handlers = null;  //存放发送请求的handler，用于回发和群发

    private MyConfig(Context context) {
        handlers = new SparseArray<Handler>();
    }

    /**
     * 得到实例
     *
     * @param context
     * @return
     */
    public static MyConfig getInstance(Context context) {
        if (instance == null) {
            synchronized (MyConstant.class) {
                if (instance == null) {
                    instance = new MyConfig(context);
                }
            }
        }
        return instance;
    }

    /**
     * 注册Handler用户广播群发
     *
     * @param key
     * @param targetHandler
     */
    public void registerHandler(int key, Handler targetHandler) {
        if (handlers != null) {
            handlers.put(key, targetHandler);
        }
    }

    /**
     * 得到用户是否登录.
     *
     * @param context
     * @return 用户登录-ture；用户没登录-false
     */
    public static boolean getIsUserLogin(Context context) {
        UserInfo userinfo = getUserInfo(context);
        if (userinfo != null) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * @return 得到用户id，如果没有登录返回 ""
     */
    public static String getUserId(Context context) {
        return MySharedPreferences.getInstance().getUserId(context);
    }

    /**
     * 设置用户id
     */
    public static void setUserId(Context context, String urid) {
        MySharedPreferences.getInstance().setUserId(context, urid);
    }

    /**
     * 设置用户信息
     */
    public static void setUserInfo(Context context, UserInfo userinfo) {
        MySharedPreferences.getInstance().setUserInfo(context, userinfo);
    }

    /**
     * 得到用户信息
     */
    public static UserInfo getUserInfo(Context context) {
        return MySharedPreferences.getInstance().getUserInfo(context);
    }

    /**
     * 设置发布失败信息
     */
    public static void setPublishDiscussFail(Context context, String publishDiscuss) {
        MySharedPreferences.getInstance().setPublishDiscussFail(context, publishDiscuss);
    }

    /**
     * 得到发布失败信息
     */
    public static String getPublishDiscussFail(Context context) {
        return MySharedPreferences.getInstance().getPublishDiscussFail(context);
    }

    /**
     * 得到用户是否登录
     */
    public static boolean isLogined(Context context) {
        if (Validator.isEffective(getUserId(context))) {
            return true;
        }
        return false;
    }

    /**
     * 设置Crashlog的md5
     *
     * @param context
     * @param index
     * @param md5
     */
    public static void setCrashLogMD5(Context context, int index, String md5) {
        SharedPreferences sharepre = PreferenceManager
                .getDefaultSharedPreferences(context);
        SharedPreferences.Editor editor = sharepre.edit();
        editor.putString("CrashMsgMD5_" + index, md5);
        editor.commit();
    }

    /**
     * 得到creshlog的MD5
     *
     * @param context
     * @param index
     * @return
     */
    public static String getCrashLogMD5(Context context, int index) {
        SharedPreferences sharepre = PreferenceManager
                .getDefaultSharedPreferences(context);
        return sharepre.getString("CrashMsgMD5_" + index, "");
    }

    /**
     * 设置crash的序号
     * @param context
     * @param index
     */
    public static void setCrashLogIndex(Context context, int index) {
        SharedPreferences sharepre = PreferenceManager
                .getDefaultSharedPreferences(context);
        SharedPreferences.Editor editor = sharepre.edit();
        editor.putInt("CrashMsgMD5Index", index);
        editor.commit();
    }

    /**
     * 得到crash的序号
     * @param context
     * @return
     */
    public static int getCrashLogIndex(Context context) {
        SharedPreferences sharepre = PreferenceManager
                .getDefaultSharedPreferences(context);
        return sharepre.getInt("CrashMsgMD5Index", 0);
    }
}